Telegram Group & Telegram Channel
🎯 Команда дня: `@overload` в Python

@overload из модуля typing позволяет указать несколько сигнатур для одной функции. Это особенно полезно, когда возвращаемый тип зависит от аргументов — и вы хотите, чтобы типизация отражала это поведение.

Пример:
from typing import Literal, overload

@overload
def transform(data: str, mode: Literal["split"]) -> list[str]: ...
@overload
def transform(data: str, mode: Literal["upper"]) -> str: ...

def transform(data: str, mode: Literal["split", "upper"]) -> list[str] | str:
return data.split() if mode == "split" else data.upper()


transform(..., "split")list[str]
transform(..., "upper")str
— Типизация подскажет ошибку, если вы вызовете append() у строки или .lower() у списка

Другой кейс — когда нужен только один аргумент из двух:
@overload
def get_user(id: int = ..., username: None = None) -> User: ...
@overload
def get_user(id: None = None, username: str = ...) -> User: ...

def get_user(id: int | None = None, username: str | None = None) -> User: ...


Так можно добиться:
get_user(id=1)
get_user(username="John")
🙅‍♂️ get_user(id=1, username="John") — не соответствует ни одной сигнатуре

Бонус: Literal позволяет ограничить значения аргументов строками:
def set_color(color: Literal["red", "blue", "green"]) -> None: ...


▶️Попытка передать yellow вызовет ошибку ещё до выполнения кода.

▶️ @overload и Literal — мощные инструменты статической проверки, особенно в больших проектах, где важна точная типизация.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pyproglib/6663
Create:
Last Update:

🎯 Команда дня: `@overload` в Python

@overload из модуля typing позволяет указать несколько сигнатур для одной функции. Это особенно полезно, когда возвращаемый тип зависит от аргументов — и вы хотите, чтобы типизация отражала это поведение.

Пример:

from typing import Literal, overload

@overload
def transform(data: str, mode: Literal["split"]) -> list[str]: ...
@overload
def transform(data: str, mode: Literal["upper"]) -> str: ...

def transform(data: str, mode: Literal["split", "upper"]) -> list[str] | str:
return data.split() if mode == "split" else data.upper()


transform(..., "split")list[str]
transform(..., "upper")str
— Типизация подскажет ошибку, если вы вызовете append() у строки или .lower() у списка

Другой кейс — когда нужен только один аргумент из двух:
@overload
def get_user(id: int = ..., username: None = None) -> User: ...
@overload
def get_user(id: None = None, username: str = ...) -> User: ...

def get_user(id: int | None = None, username: str | None = None) -> User: ...


Так можно добиться:
get_user(id=1)
get_user(username="John")
🙅‍♂️ get_user(id=1, username="John") — не соответствует ни одной сигнатуре

Бонус: Literal позволяет ограничить значения аргументов строками:
def set_color(color: Literal["red", "blue", "green"]) -> None: ...


▶️Попытка передать yellow вызовет ошибку ещё до выполнения кода.

▶️ @overload и Literal — мощные инструменты статической проверки, особенно в больших проектах, где важна точная типизация.

Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/pyproglib/6663

View MORE
Open in Telegram


Библиотека питониста | Python Django Flask Telegram | DID YOU KNOW?

Date: |

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

The STAR Market, as is implied by the name, is heavily geared toward smaller innovative tech companies, in particular those engaged in strategically important fields, such as biopharmaceuticals, 5G technology, semiconductors, and new energy. The STAR Market currently has 340 listed securities. The STAR Market is seen as important for China’s high-tech and emerging industries, providing a space for smaller companies to raise capital in China. This is especially significant for technology companies that may be viewed with suspicion on overseas stock exchanges.

Библиотека питониста | Python Django Flask from jp


Telegram Библиотека питониста | Python, Django, Flask
FROM USA